やりたいことの説明がむずかしい
Rだと、group_by() を複数列でやって、最終的にはunique()で、単一な配列を抽出したい。
下のように、複数の列がある。同一の診療日に複数の処置をしている。もちろん患者は、架空の動物。
それを以下のように、診療日を1つだけにしたい。
Sub 解析()
Dim myDic As Object, myKey, myItem
Dim myVal, myVal2, myVal3
Dim i, j As Long
Set myDic = CreateObject("Scripting.Dictionary")
' データを配列に格納
myVal = Worksheets("シート名1").Range("A2:E80000").Value
' myVal2をmyValの列を合成して作る。
' myVal2をmyDicへkeyとして格納。keyは同一のものは複数登録されず、1つだけ登録される。
For i = 1 To UBound(myVal, 1)
myVal2 = myVal(i, 1) & "_" & myVal(i, 2) & "_" & myVal(i, 3) & "_" & myVal(i, 4) & "_" & myVal(i, 5)
If Not myVal2 = "_" Then
If Not myDic.exists(myVal2) Then
myDic.Add myVal2, myVal(i, 5) 'key = myVal2 , item = myVal(i,5)
End If
End If
Next
' ---Key,Itemの書き出し
myKey = myDic.keys 'key = myVal2
myItem = myDic.items 'item = myVal(i,5)
For i = 0 To UBound(myKey)
myVal3 = Split(myKey(i), "_") 'myKeyを分割して、myVal3を作成する。
Worksheets("シート名2").Cells(i + 2, 1).Value = myVal3(0)
Worksheets("シート名2").Cells(i + 2, 2).Value = myVal3(3)
Worksheets("シート名2").Cells(i + 2, 3).Value = myVal3(4)
Next
Set myDic = Nothing
End Sub